if a tile's high byte is GREATER THAN 0x03 then that means it has changed its palette from the first one
if a tile's high byte is GREATER THAN 0x40 then that means it is mirrored

if high byte is any multiple of 4, then that means it uses the 100h bytes of junk at the beginning so it
more than likely isn't a multiple of 4 because that crap isn't used (if it is it's stupid because it's ugly)

all of this modification isn't done in the code (except adding 0x0100 to skip over the 2000h bytes of junk GFX)
and is in the data itself

decompressed data blocks can be either 1000h bytes or 2000h bytes, but a section is always 2000h bytes and the values
read from each section of the data, which is packed into some 8000h bytes (subject to change if GFX blocks are varying sizes)
but the important thing to remember is that a section is always 2000h bytes

section 0 is always the first 2000h bytes of junk GFX

the palettes are read from the palette set and only reaches to the 7th palette; palette sets are assigned in the area
layout data

examples of high byte values:

00   reads from section 0 (first 2000h bytes of junk GFX) using palette 0
01   reads from section 1 of compressed GFX using palette 0
02   reads from section 2 of compressed GFX using palette 0
03   reads from section 3 of compressed GFX using palette 0

04   reads from section 0 (first 2000h bytes of junk GFX) using palette 1
05   reads from section 1 of compressed GFX using palette 1
06   reads from section 2 of compressed GFX using palette 1
07   reads from section 3 of compressed GFX using palette 1

08   reads from section 0 (first 2000h bytes of junk GFX) using palette 2
09   reads from section 1 of compressed GFX using palette 2
0A   reads from section 2 of compressed GFX using palette 2
0B   reads from section 3 of compressed GFX using palette 2

since there are only 16 palettes in a set, it only goes up to 4 x 16 (4 * 10h) minus 1, which is 3F
examples of high byte mirrored values:

41   reads from section 1 of compressed GFX using palette 0, mirrored
42   reads from section 1 of compressed GFX using palette 0, mirrored
43   reads from section 1 of compressed GFX using palette 0, mirrored
44   reads from section 1 of compressed GFX using palette 0, mirrored

45   reads from section 1 of compressed GFX using palette 1, mirrored
46   reads from section 1 of compressed GFX using palette 1, mirrored
47   reads from section 1 of compressed GFX using palette 1, mirrored
48   reads from section 1 of compressed GFX using palette 1, mirrored

the low byte is simply the tile # in the tile section it is reading from;
8x8 tiles are 32(20h) bytes each 
examples of a 8x8 tile:

0100   reads 1st tile from section 1 of compressed GFX using palette 0
0101   reads 2nd tile from section 1 of compressed GFX using palette 0
0102   reads 3rd tile from section 1 of compressed GFX using palette 0
0103   reads 4th tile from section 1 of compressed GFX using palette 0

0200   reads 1st tile from section 2 of compressed GFX using palette 0
0201   reads 2nd tile from section 2 of compressed GFX using palette 0
0202   reads 3rd tile from section 2 of compressed GFX using palette 0
0203   reads 4th tile from section 2 of compressed GFX using palette 0

4104   reads 5th tile from section 1 of compressed GFX using palette 0, mirrored
4204   reads 5th tile from section 2 of compressed GFX using palette 0, mirrored

4505   reads 6th tile from section 1 of compressed GFX using palette 1, mirrored
4605   reads 6th tile from section 2 of compressed GFX using palette 1, mirrored


HOW TO MODIFY A TILE, starting from a base 8x8 tile with NO modifications
(mirroring, palette pointing, section pointing) example:

step 1: start with base tile
0100   reads 1st tile from section 1 of compressed GFX using palette 1

step 2: change tile to tile number 42h
0142

step 3: change the section to section 3 (add difference between the desired section and the current section)
0342

step 4: change the palette to palette 7, (7 * 4) = 28 (1Ch) and add product to high byte
1F42

step 5: mirror it, add 40h to high byte
5F42

so now it reads tile 42h from section 3 of compressed GFX using palette 7, mirrored

NOTE: it can only read from palette 0-7 I guess because the other 8 are used for other crap

IN THE COMPRESSED TILESETS:
the byte would look like 5E42 because the processor adds 0100 to skip over the 2000h bytes of junk GFX section


EACH COMPRESSED DATA SET IS EXACTLY 8000h BYTES as seen in a ZST, divided into four sections of 2000h bytes each.
Section 0 is the junk GFX section and isn't used in tiles.

A compressed data set is a compilation of the GFX called from those five bytes (11 12 13 14 15) in their order.

To work backwards:

step 1: start with tile
0DC6

step 2: subtract 0x40 if it is greater than/equal to 40h
0DC6 (no modifications this time)

step 3: divide high byte by four
03C6

remainder is 1, so it is from section 1
quotient is 0x03 so it uses palette 3

IN THE COMPRESSED TILESETS:
the original byte would look like 0CC6 because of the whole junk GFX skipping/adding 0100 shindig